﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using CondominioWeb.Negocio;
using CondominioWeb.Dominio;

namespace CondominioWeb.Controllers
{
    public class ResidenteController : Controller
    {
        public PagoMorosidadService PagoMorosidadService { get; set; }

        public ActionResult Index()
        {
            ICollection<Residente> modelo = PagoMorosidadService.ResidentesListado();
            return View(modelo);
        }

        public ActionResult Details(int Codigo)
        {
            Residente modelo = PagoMorosidadService.ResidenteObtener(Codigo);
            return View(modelo);
        }

        public ActionResult Create()
        {
            return View();
        } 

        [HttpPost]
        public ActionResult Create(FormCollection collection)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    Residente oResidente = new Residente();
                    Tipo_Documento oTipoDocumento = PagoMorosidadService.TipoDocumentoObtener(Int32.Parse((String)collection["oTipoDocumentoResidente"]));

                    oResidente.CodigoResidente = Int32.Parse((String)collection["CodigoResidente"]);
                    oResidente.oTipoDocumentoResidente = oTipoDocumento;                    
                    oResidente.NumeroDocumento = (String)collection["NumeroDocumento"];
                    oResidente.NombreResidente = (String)collection["NombreResidente"];
                    oResidente.ApellidoResidente = (String)collection["ApellidosResidente"];
                    oResidente.FechaNacimiento = DateTime.Parse((String)collection["FechaNacimiento"]);
                    oResidente.Correo = (String)collection["Correo"];
                    oResidente.ClaveAcceso = (String)collection["ClaveAcceso"];
                    oResidente.Estado = (String)collection["Estado"];
                    oResidente.TipoResidente = Int32.Parse((String)collection["TipoResidente"]);

                    PagoMorosidadService.ResidenteCrear(oResidente);
                    return RedirectToAction("Index");
                }
                else
                {
                    return View();
                }
            }
            catch
            {
                ModelState.AddModelError(String.Empty, "Error al crear Residente");
                return View();
            }
        }
 
        public ActionResult Edit(int Codigo)
        {
            Residente modelo = PagoMorosidadService.ResidenteObtener(Codigo);
            return View(modelo);
        }

        [HttpPost]
        public ActionResult Edit(int Codigo, FormCollection collection)
        {
            try
            {
                Residente oResidente = PagoMorosidadService.ResidenteObtener(Codigo);
                Tipo_Documento oTipoDocumento = PagoMorosidadService.TipoDocumentoObtener(Int32.Parse((String)collection["oTipoDocumentoResidente"]));

                oResidente.CodigoResidente = Int32.Parse((String)collection["CodigoResidente"]);
                oResidente.oTipoDocumentoResidente = oTipoDocumento;
                oResidente.NumeroDocumento = (String)collection["NumeroDocumento"];
                oResidente.NombreResidente = (String)collection["NombreResidente"];
                oResidente.ApellidoResidente = (String)collection["ApellidosResidente"];
                oResidente.FechaNacimiento = DateTime.Parse((String)collection["FechaNacimiento"]);
                oResidente.Correo = (String)collection["Correo"];
                oResidente.ClaveAcceso = (String)collection["ClaveAcceso"];
                oResidente.Estado = (String)collection["Estado"];
                oResidente.TipoResidente = Int32.Parse((String)collection["TipoResidente"]);

                PagoMorosidadService.ResidenteModificar(oResidente);
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }

        public ActionResult Delete(int Codigo)
        {
            Residente modelo = PagoMorosidadService.ResidenteObtener(Codigo);
            return View(modelo);
        }

        [HttpPost]
        public ActionResult Delete(int Codigo, FormCollection collection)
        {
            try
            {
                Residente oResidente = PagoMorosidadService.ResidenteObtener(Codigo);
                PagoMorosidadService.ResidenteEliminar(oResidente);
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }
    }
}
